home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / msn / p9 / MSNP9Notification.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  103 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from __future__ import with_statement
  5. import logging
  6. from util import get, isint, tag, callsback
  7. import msn
  8. from msn import Message
  9. from msn.p8 import Notification as Super
  10. log = logging.getLogger('msn.p9.ns')
  11. defcb = dict(trid = True, callback = sentinel)
  12.  
  13. class MSNP9Notification(Super):
  14.     events = Super.events | set(('recv_sms', 'contact_icon_info'))
  15.     versions = [
  16.         'MSNP9']
  17.     
  18.     def _set_buddy_icon(self, status, clientid, icon_data, callback):
  19.         if icon_data is not None:
  20.             import hashlib as hashlib
  21.             hash = hashlib.sha1(icon_data).digest()
  22.             import random as random
  23.             fn = 'temp%d.dat' % random.randint(1, 1000)
  24.             self.icon_obj = msn.MSNObject(Creator = self.self_buddy.name, Type = '3', Location = fn, Size = len(icon_data), SHA1D = hash)
  25.             self.self_buddy.msn_obj = self.icon_obj
  26.             self.self_buddy.notify('icon_hash')
  27.             log.debug('setting icon obj')
  28.         
  29.         self.send_chg(status, clientid, callback = callback)
  30.  
  31.     
  32.     def _get_buddy_icon(self, name, callback):
  33.         log.info('get buddy icon: %s', name)
  34.  
  35.     
  36.     def _parse_iln_nln(self, msg):
  37.         log.debug('got iln/nln')
  38.         args = Super._parse_iln_nln(self, msg)
  39.         iconinfo = msn.util.url_decode(get(msg.args, 4, ''))
  40.         if '<' in iconinfo and '>' in iconinfo:
  41.             msnobj = msn.MSNObject.parse(iconinfo)
  42.         else:
  43.             msnobj = None
  44.         return (args, msnobj)
  45.  
  46.     
  47.     def recv_iln(self, msg):
  48.         (args, msnobj) = self._parse_iln_nln(msg)
  49.         name = args[0]
  50.         self.event('contact_online_initial', *args)
  51.         self.event('contact_icon_info', name, msnobj)
  52.  
  53.     
  54.     def recv_nln(self, msg):
  55.         (args, msnobj) = self._parse_iln_nln(msg)
  56.         name = args[0]
  57.         self.event('contact_online', *args)
  58.         self.event('contact_icon_info', name, msnobj)
  59.  
  60.     
  61.     def recv_chg(self, msg):
  62.         Super.recv_chg(self, msg)
  63.         msnobj = msg.args[-1]
  64.         if not isint(msnobj):
  65.             self.icon_obj = msn.MSNObject.parse(msn.util.url_decode(msnobj))
  66.         else:
  67.             self.icon_obj = None
  68.         self.event('contact_icon_info', self._username, self.icon_obj)
  69.  
  70.     
  71.     def recv_ipg(self, msg):
  72.         log.debug('Received IPG command')
  73.         log.debug(str(msg))
  74.         n = tag(msg.payload)
  75.         sender = n.FROM['name']
  76.         message = n.MSG.BODY.TEXT
  77.         if sender.startswith('tel:+'):
  78.             sender = sender[4:]
  79.         
  80.         self.event('recv_sms', sender, unicode(message))
  81.  
  82.     
  83.     def send_png(self):
  84.         log.debug('ping')
  85.         self.socket.send(Message('PNG'))
  86.         log.info('pinged')
  87.  
  88.     
  89.     def send_chg(self, code, client_id, callback = None):
  90.         if code.lower() == 'fln':
  91.             code = 'HDN'
  92.         
  93.         iconobj = getattr(self, 'icon_obj', None)
  94.         if iconobj:
  95.             msnobj = msn.util.url_encode(iconobj.to_xml())
  96.         else:
  97.             msnobj = ''
  98.         if not callback:
  99.             pass
  100.         self.socket.send(Message('CHG', code, str(client_id), msnobj), trid = True, callback = sentinel)
  101.  
  102.  
  103.